import java.lang.Math;

// edit through google code's web page
public class DigitMultiples {

	// 边界的判断挺麻烦的
	public int getLongest(String s1, String s2) {
		int len1 = s1.length();
		int len2 = s2.length();

		int bandary = Math.min(len1, len2);
		int max = -1;

		for (int i = 0; i < len1; i++) {

			// for debug
//			if (i == 1) {
//				System.out.println("hi");
//			}
			int right = i + bandary;
			int limit = Math.min(right, len1);

			for (int j = limit; j >= i; j--) {
//				if (j == 10) {
//					System.out.println("d");
//				}
				if (checkMultiple(s1.substring(i, j), s2)) {
					int val = j - i;
					if (val > max) {
						max = val;
//						System.out.println(s1.substring(i, j));
					}
					break;
				}
			}

		}
		return max;
	}

	public boolean checkMultiple(String s1, String s2) {
		int len1 = s1.length();
		int len2 = s2.length();
		// boolean iszero = true;
		// for(int i=0;i<len1;i++) {
		// if(s2.charAt(i)!='0') {
		// iszero = false;
		// break;
		// }
		// }
		// if (iszero) {
		// return true;
		// }

		// for (int i = 0; i < len1; i ++) {
		// if (s1.charAt(i)=='0'&& s2.charAt(i)!='0' || s1.charAt(i)!='0'&&
		// s2.charAt(i)=='0') {
		// return false;
		// }
		// }

		// 循环错位
		// 乘法之后，s1xn=s2
		for (int j = 0; j + len1 <= len2; j++) {
			int multiration = -1;
			
			int point = -1;
			for (int i = 0; i < len1; i++) {
				int index = i + j;
				if (s1.charAt(i) == '0' && s2.charAt(index) == '0') {
					if(i==len1-1) {
						// 这个判断条件找了挺久
						// 前面都没出错，这里对倍数也没限制了，可以直接返回true
						return true;
					}
					continue;
				} else if (s1.charAt(i) == '0' || s2.charAt(index) == '0') {
					// 只有一者为0，即断定比率为0
					// 第一次进入可以设置值
					if(multiration == -1) {
						multiration = 0;
					} else if(multiration != 0 || s2.charAt(index) !='0') {
						// 如果存在0，表面倍数只能为0，所以s2中不能有非零项
						break;
					}
					
				} else {
					
					// 索引搞错
					int v1 = s1.charAt(i) - '0';
					int v2 = s2.charAt(index) - '0';
					if(v1>v2) {
						break;
					}
					
					int val = v2/v1;
					
					if (multiration == -1) {
						multiration = val;
					} else if (val != multiration) {
						// 不应该马上返回，还有其他迭代未完成
						// return false;
						// 此次匹配完成
						break;
					} else if(val == multiration && i==len1-1) {
						// 最后两个continue分支，没有进入这里
						return true;
					}
				}
				
				// 其实只要在这里写一个判断条件就够了。
				if(i==len1-1) {
					return true;
				}

				// boolean havezero = false;
				// if (s1.charAt(i) == '0') {
				// havezero = true;
				// continue;
				// } else if ((s1.charAt(i) > s2.charAt(i + j))
				// || ((s2.charAt(i) - '0') % (s1.charAt(i + j) - '0') != 0)) {
				// return false;
				// } else {
				// int val = (s2.charAt(i) - '0') / (s1.charAt(i) - '0');
				// if (multiration == -1) {
				// multiration = val;
				// } else {
				// if (val != multiration) {
				// return false;
				// }
				// }
				//
				// }
				
				point = i;
			}
			
			// 执行到这里，说明符合倍数关系
			// 应该放在第一层循环外面
			if(point == len1)
				return true;
		}
		return false;

	}

	public boolean checkzero(String s) {
		boolean iszero = true;
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) != '0') {
				iszero = false;
				break;
			}
		}

		return iszero;
	}

	public boolean check(String s1, String s2) {

//		int len1 = s1.length();
//		int len2 = s2.length();

//		if (len1 == len2) {
//			// 如果一方为全0，必然符合倍数关系
//			if (checkzero(s1) || checkzero(s2)) {
//				return true;
//			}
//			int j = 0;
//			while (j < len1) {
//				// s1不能比s2大
//				if (s1.charAt(j) > s2.charAt(j)) {
//					return false;
//				}
//				j++;
//			}
//
//		}

//		return checkMultiple(s1, s2);

		// long n1 = Long.parseLong(s1);
		// long n2 = Long.parseLong(s2);
		//
		// if (n1 == 0) {
		// return true;
		// } else if (n2 < n1) {
		// return false;
		// } else if (n2 % n1 == 0) {
		// return true;
		// }
		 return false;
	}

	public static void main(String argv[]) {
		DigitMultiples test = new DigitMultiples();
		String s1 = "111111111100000000000000000000000000000000000";
		String s2 = "122333444455555666666777777788888888999999999";
		System.out.println(test.getLongest(s1, s2));
	}

}
